package cn.tedu.csmall.cart.webapi.config;

import cn.tedu.csmall.cart.webapi.mybatis.MybatisInterceptor;
import io.swagger.models.auth.In;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;
import java.util.List;

@Configuration
// MyBatis框架扫描mapper接口包的注解
@MapperScan("cn.tedu.csmall.cart.webapi.mapper")
// 启动配置拦截器生效的固定注解
@AutoConfigureAfter(MybatisAutoConfiguration.class)
public class MyBatisConfiguration {
    // 从spring容器中获得MyBatis的会话管理器
    // 会话管理器就是执行数据库操作的核心类
    @Autowired
    private List<SqlSessionFactory> sqlSessionFactoryList;

    // 设置会话管理器关联拦截器生效
    @PostConstruct
    public void addInterceptors(){
        // 实例化拦截器对象
        Interceptor interceptor=new MybatisInterceptor();
        // 将当前过滤器关联所有会话管理器
        for(SqlSessionFactory factory: sqlSessionFactoryList){
            factory.getConfiguration().addInterceptor(interceptor);
        }
    }

}
